package com.newjiabo.ski.mapper;

import com.newjiabo.ski.domain.SkiOrder;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * 订单Mapper接口
 *
 * @author CaoMengHui
 * @date 2023-09-22
 */
public interface SkiOrderMapper {
    /**
     * 查询订单
     *
     * @param orderId 订单主键
     * @return 订单
     */
    SkiOrder selectSkiOrderByOrderId(String orderId);

    /**
     * 查询订单列表
     *
     * @param skiOrder 订单
     * @return 订单集合
     */
    List<SkiOrder> selectSkiOrderList(SkiOrder skiOrder);

    /**
     * 新增订单
     *
     * @param skiOrder 订单
     * @return 结果
     */
    int insertSkiOrder(SkiOrder skiOrder);

    /**
     * 修改订单
     *
     * @param skiOrder 订单
     * @return 结果
     */
    int updateSkiOrder(SkiOrder skiOrder);

    /**
     * 删除订单
     *
     * @param orderId 订单主键
     * @return 结果
     */
    int deleteSkiOrderByOrderId(Long orderId);

    /**
     * 批量删除订单
     *
     * @param orderIds 需要删除的数据主键集合
     * @return 结果
     */
    int deleteSkiOrderByOrderIds(Long[] orderIds);

    /**
     * 通过订单号查询
     *
     * @param outTradeNo
     * @return
     * @author CaoMengHui.
     * @date 2023/9/22 17:11
     */
    SkiOrder selectByOutTradeNo(String outTradeNo);

    /**
     * 支付成功之后更改订单状态
     *
     * @param outTradeNo
     * @param transactionId
     * @param orderStatus
     * @param successTime
     * @param payTotal
     * @return
     * @author CaoMengHui.
     * @date 2023/9/22 17:25
     */
    int updateStatusAndPayNoByOrderNo(@Param("outTradeNo") String outTradeNo,
                                      @Param("transactionId") String transactionId,
                                      @Param("orderStatus") String orderStatus,
                                      @Param("successTime") Date successTime,
                                      @Param("payTotal") double payTotal);

    /**
     *  通过oderId更新状态信息
     *
     * @author CaoMengHui.
     * @date 2023/9/26 14:40
     * @param orderId
     * @param orderStatus
     * @return
     */
    int updateStatusByOrderId(@Param("orderId") String orderId, @Param("orderStatus") String orderStatus);
}
